#ifndef BUPS_H_
#define BUPS_H_

/*
 * Clase auxiliar que maneja una clase especial de bases conocidas como
 * Bases Uniforme Periodica Spline (BUPS)
 *
 * Los puntos nudo (o knots) de una BSpline son caracterizados por la secuencia
 * de escalares creciente (no necesariamente monotona) t1, t2, ... ti
 *
 * Dicha secuencia en una BUPS cumple que tj - ti = j - i (Uniforme equiespaciada)
 *
 * */
class BUPS {
   private:
      int orden;

      float base(int ordenK, int baseI, float t) const;
      float baseDerivada(int ordenK, int baseI, float t) const;

   public:
      BUPS(int orden);

      // El valor t debe estar entre [orden-1; M-orden]
      // para algun "M" tal que "M" > "orden"
      //
      // Cualquier otro valor para t dara resultados inconsistentes.
      float base(int baseI, float t) const;
      float derivada(int baseI, float t) const;
};

#endif
